import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.SimpleDateFormat;
import java.util.Date;

/*增加按钮事件
* */

/*
lambda表达式:
JDK8的新特性，可以使代码简洁。
即使我们使用匿名内部类，仍然会造成代码冗余。
***
lambda表达式语法:
(参数名)->{

}
对比:
public void actionPerformed(ActionEvent e) {

}
===================
(参数名) == (e)
写成:
(e)->{

}

* */
public class MyPanel extends JPanel {
    public JLabel jLabel = new JLabel("[00:00:00]");//记录当前时间
    JButton jButton = new JButton("Start");  //Status  ::: start starting restart
    public MyPanel() {
        add(jButton);
        add(jLabel);

       //注册事件
        jButton.addActionListener((args)->{
            System.out.println("按钮被点击");
            jLabel.setText(showTime());
            jButton.setText("starting");
        });
/*
@notice : e is 形式参数的名字
随便起
       //注册事件
        jButton.addActionListener((e)->{
            System.out.println("按钮被点击");
            jLabel.setText(showTime());
            jButton.setText("starting");
        });
*/


    }

    //return formatted time for jlabel
    private String showTime(){
        SimpleDateFormat sdf = new SimpleDateFormat("[HH:mm:ss]");
        return sdf.format(new Date());
    }


}

class Test{

    public static void main(String[] args) {
        JFrame jFrame = new JFrame("测试第三级组件");
        jFrame.setLocation(300,400);
        jFrame.setSize(400,400);
        jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        jFrame.setLocationRelativeTo(null);
        jFrame.setLayout(new FlowLayout());

        MyPanel myPanel = new MyPanel();
        jFrame.add(myPanel);
        jFrame.setVisible(true);
    }

}
